#region Using directives
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using webapp4U.BOL;
#endregion


namespace webapp4U.DAL
{
	 public class BosuutapDAL : BaseDAL
	 {
	 #region ObjIDataReader

	 /// <summary>
	 /// Returns a new Bosuutap instance filled with the DataReader's current record data 
	 /// </summary>
	 private Bosuutap GetBosuutapFromReader(IDataReader dr)
	 {
		 Bosuutap obj = new Bosuutap();
		 obj.BosuutapID = (dr["BosuutapID"] is DBNull) ? Int32.MinValue :  (Int32)dr["BosuutapID"];
		 obj.AddedDate = (dr["AddedDate"] is DBNull) ? String.Empty :  (String)dr["AddedDate"];
		 obj.Title = (dr["Title"] is DBNull) ? String.Empty :  (String)dr["Title"];
		 obj.Title_en = (dr["Title_en"] is DBNull) ? String.Empty :  (String)dr["Title_en"];
		 obj.Description = (dr["Description"] is DBNull) ? String.Empty :  (String)dr["Description"];
		 obj.CompanyID = (dr["CompanyID"] is DBNull) ? Int32.MinValue :  (Int32)dr["CompanyID"];
		 obj.IsActive = (dr["IsActive"] is DBNull) ? false :  (Boolean)dr["IsActive"];
		 obj.DisplayOrder = (dr["DisplayOrder"] is DBNull) ? 0 :  (Int32)dr["DisplayOrder"];
		 return obj;
	 }
	 #endregion

	 /// <summary>
	 /// Returns a collection of Bosuutap with the data read from the input DataReader
	 /// </summary>
	 private List<Bosuutap> GetBosuutapCollectionFromReader(IDataReader dr)
	 {
		 List<Bosuutap> obj = new List<Bosuutap>();
		 while(dr.Read())
			 obj.Add(GetBosuutapFromReader(dr));
		 return obj;
	 }

	 public int Insert(Bosuutap obj)
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_Insert", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 myCommand.Parameters.Add("@BosuutapID", SqlDbType.Int).Direction = ParameterDirection.Output;
		 myCommand.Parameters.Add("@AddedDate", SqlDbType.Char).Value = obj.AddedDate;
		 myCommand.Parameters.Add("@Title", SqlDbType.NVarChar).Value = obj.Title;
		 myCommand.Parameters.Add("@Title_en", SqlDbType.NVarChar).Value = obj.Title_en;
		 myCommand.Parameters.Add("@Description", SqlDbType.NVarChar).Value = obj.Description;
		 myCommand.Parameters.Add("@CompanyID", SqlDbType.Int).Value = obj.CompanyID;
		 myCommand.Parameters.Add("@IsActive", SqlDbType.Bit).Value = obj.IsActive;
		 myCommand.Parameters.Add("@DisplayOrder", SqlDbType.Int).Value = obj.DisplayOrder;

		 int ret = myCommand.ExecuteNonQuery();
		 return (int)myCommand.Parameters["@BosuutapID"].Value; 
		 }
	 }

	 public bool Update(Bosuutap obj)
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_Update", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 myCommand.Parameters.Add("@BosuutapID", SqlDbType.Int).Value = obj.BosuutapID;
		 myCommand.Parameters.Add("@AddedDate", SqlDbType.Char).Value = obj.AddedDate;
		 myCommand.Parameters.Add("@Title", SqlDbType.NVarChar).Value = obj.Title;
		 myCommand.Parameters.Add("@Title_en", SqlDbType.NVarChar).Value = obj.Title_en;
		 myCommand.Parameters.Add("@Description", SqlDbType.NVarChar).Value = obj.Description;
		 myCommand.Parameters.Add("@CompanyID", SqlDbType.Int).Value = obj.CompanyID;
		 myCommand.Parameters.Add("@IsActive", SqlDbType.Bit).Value = obj.IsActive;
		 myCommand.Parameters.Add("@DisplayOrder", SqlDbType.Int).Value = obj.DisplayOrder;

		 int ret = myCommand.ExecuteNonQuery();
		 return (ret == 1);
		 }
	 }

	 public bool Delete(Int32 BosuutapID)
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_Delete", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 myCommand.Parameters.Add("@BosuutapID", SqlDbType.Int).Value = BosuutapID;

		 int ret = myCommand.ExecuteNonQuery();
		 return (ret == 1);
		 }
	 }

	 /// <summary>
	 /// Retrieves the w4u_Bosuutap with the specified ID
	 /// </summary>
	 public Bosuutap GetBosuutapByID(Int32 BosuutapID)
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_GetBosuutapByID", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 myCommand.Parameters.Add("@BosuutapID", SqlDbType.Int).Value = BosuutapID;

		 SqlDataReader dr = myCommand.ExecuteReader();
		 return (dr.Read() ? GetBosuutapFromReader(dr) : null);
		 }
	 }

	 //Get All Bosuutap
	 public List<Bosuutap> GetAllBosuutap(int PageIndex, int PageSize)
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_GetAllBosuutap", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 myCommand.Parameters.Add("@PageIndex", SqlDbType.Int).Value = PageIndex;
		 myCommand.Parameters.Add("@PageSize", SqlDbType.Int).Value = PageSize;
		 SqlDataReader dr = myCommand.ExecuteReader();
		 return GetBosuutapCollectionFromReader(dr);
		 }
	 }

	 // Get Count All records of Table  Bosuutap
	 public int GetCountBosuutap()
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_GetCountBosuutap", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 return (int)myCommand.ExecuteScalar();
		 }
	 }

	 // Get BosuutapByCompanyID
	 public List<Bosuutap> GetBosuutapByCompanyID(Int32 CompanyID,int PageIndex, int PageSize)
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_GetBosuutapByCompanyID", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 myCommand.Parameters.Add("@CompanyID", SqlDbType.Int).Value = CompanyID;
		 myCommand.Parameters.Add("@PageIndex", SqlDbType.Int).Value = PageIndex;
		 myCommand.Parameters.Add("@PageSize", SqlDbType.Int).Value = PageSize;
		 SqlDataReader dr = myCommand.ExecuteReader();
		 return GetBosuutapCollectionFromReader(dr);
		 }
	 }

	 // Get BosuutapCountByCompanyID
	 public int GetBosuutapCountByCompanyID(Int32 CompanyID)
	 {
		 using (SqlConnection myConn = GetConnectionString())
		 {
		 SqlCommand myCommand = new SqlCommand("w4u_Bosuutap_GetBosuutapCountByCompanyID", myConn); 
		 myCommand.CommandType = CommandType.StoredProcedure; 
		 myCommand.Parameters.Add("@CompanyID", SqlDbType.Int).Value = CompanyID;
		 return (int)myCommand.ExecuteScalar();
		 }
	 }

	 }
}
